Python Object Oriented Programming

In this tutorial, we will discuss Python Object Oriented Programming concept and learn its fundamentals. Python Object Oriented Programming

What are OOPs in Python?

As we know python is a high-level programming language with multi-paradigm, here Object-Oriented Programming is one of those paradigms. Object-oriented programming is a programming technique that most of the high-level programming language support in this we use class and object to make a program . An Object has two characteristics:

  • Attribute
  • Behaviours

Here attributes are the variable and behaviour can be taken as the function of those variables.

Let’s understand it with an example

Consider a Car as an Object So, its color, brand name, considered as its attributes Where the gear mechanism and speed would be considered as its behaviour.

OOP’s Properties

  • Inheritance

When we use the properties of one class in another class.

  • Encapsulation

All the code is inside a Class block.

  • Polymorphism

Operators performing different operations on different data types

Two Main Component of OPP’s

  • Class
  • Object

Class

A class is a Keyword which is used to make the blueprint of an Object.  A class has no existence until its object gets created.

Class Syntax

class Class_Name:                 #class body which includes its properties 

Example:

class Car:
    car_colour = "blue"
    car_brand = "BMW"

Object

The object of a class is also known as the instance of the class. When we create an object of the class the class come in existence, and with the help of object, we can access the properties of the class. A class has many objects.

Object creation syntax

obj_name = Class_name()

Example

Suppose Bob and Sam has same car, and if we represent it with OOP’s concept the car would be a class and Bob and Sam will be Objects.

 class Car:
     car_colour = "blue"         #Class attributes
     car_brand = "BMW"        #class attributes

bob = Car()                          # Bob is an object here
sam = Car()                         # Sam is the another object of Car

print("the brand of Bob's car is:",bob.car_brand)
print("the Colour of Sam car is:", sam.car_colour) 

# Output

the brand of Bob's car is: BMW
the Colour of Sam car is: blue

Behind the code

Here in the above code, we made two objects ( sam and bob ) of the same class ( Car ), and we have used the car attributes outside the Class block using its object and dot operator.

Class Methods:

Functions inside a Class know as class methods. There are two types of Class methods user-defined methods and magical methods. The python magical methods also are known as under these methods contain double underscores (__) before and after the method name.

Example:

class Car:
    def __init__(self,car_brand,car_colour):                 #Class megical method and class Constructor
        self.car_colour =car_colour
        self.car_brand = car_brand

    def car_details(self):      #Class method
        print("The car brand is", self.car_brand, "and it",self.car_colour, "in colour")


bob = Car("BMW", "Blue")                          
sam = Car("Ferrari", "Red")                         
bob.car_details()             #Calling class method using object
sam.car_details()

#Output

The car brand is BMW and it Blue in colour
The car brand is Ferrari and it Red in colour

Python Object-Oriented Programming Properties:

1. Inheritance

Inheritance is one of the most important properties of OPP’s concept and it used more often as compared to other OOP’s properties. In inheritance, we can use the properties ( Attributes and Method) of one class in another. The main motto of inheritance is the reusability, code written in one class can be used in another. Inheritance has two components: base class and derived class. The Base class also known as Parent class and the derived also know as child class. The derived class inherit the properties from the base class.

Syntax

class base_class:
     # Base Class block

class derived_class (base_class):                # here derived class inherit base class
    #base class block

Example:

class Mammals:
    def __init__(self):
        print("Mammals Class has been created")
    def type(self):
        print("It is a Mammals")
class Dog(Mammals):
    def __init__(self):
        print('dog class has been created')

bob_pet = Dog()               #When we create class object it invoke __init__ method
bob_pet.type()                 # Here we call Mammals method using Dog object.

#Output:

dog class has been created
It is a Mammals

2. Encapsulation

Encapsulation deal with data hiding from an Object.  In python class, we use single or double underscore before the attributes name to tell the object that particular attribute is private for class only and object not supposed to access those attributes directly.

Example:

class make():
    def __init__(self):
        self.item = 200                  
        self.__item = 200              #Private member
    def itemsvalue(self):
        print("Total no. of __items",self.__item)
        print("Total no. of items",self.item)
m= make()
m.itemsvalue()
print("-----------change the value of item and __item using object--------- ")
m.item = 300
m.__item = 300
m.itemsvalue()

#Output:

Total no. of __items 200
Total no. of items 200
-----------change the value of item and __item using object---------
Total no. of __items 200
Total no. of items 300

3. Polymorphism

With polymorphism, we can have the same method name for different classes. Polymorphism applies on operators too for example if we use + operator between two integers it will add both integers, but if we use the same + operator between two string it will concatenate them.

Example:

class Cat:
    def eat(self):
        print("cat eat fish")
    def swim(self):
        print("Cat can't swim")
class Dog:
    def eat(self):
        print("Dog Food, Meat")
    def swim(self):
        print("Dogs can swim")
james_pet = Dog()
sofi_pet = Cat()
james_pet.swim()
sofi_pet.swim()

#Output:

Dogs can swim
Cat can't swim

Some Advantages of OOPs:

  • OOPs provide a modular way to complete the project
  • It increases the code reusability
  • Give more data security.